home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / Development Tools & Languages / • Other Platforms / PCCTS / testcpp / 9 / test.g < prev   
Encoding:
Text File  |  1994-09-14  |  830 b   |  54 lines  |  [TEXT/MPS ]

  1. /* This is test.g which tests simple AST refs and construction */
  2.  
  3. <<
  4. typedef ANTLRCommonToken ANTLRToken;
  5. #include "DLGLexer.h"
  6.  
  7. class AST : public ASTBase {
  8. public:
  9.     ANTLRToken token;
  10.     AST(ANTLRToken *t) { token = *t; }
  11.     void preorder_action() {
  12.         char *s = token.getText();
  13.         printf(" %s", s);
  14.     }
  15. };
  16.  
  17. main()
  18. {
  19.     ANTLRToken aToken;
  20.     DLGFileInput in(stdin);
  21.     DLGLexer scan(&in,2000);
  22.     ANTLRTokenBuffer pipe(&scan);
  23.     scan.setToken(&aToken);
  24.     Expr parser(&pipe);
  25.     parser.init();
  26.  
  27.     ASTBase *root = NULL;
  28.     parser.e(&root);
  29.     root->preorder();
  30.     printf("\n");
  31. }
  32. >>
  33.  
  34. #token "[\ \t\n]+"    <<skip();>>
  35. #token Eof "@"
  36.  
  37. class Expr {                /* Define a grammar class */
  38.  
  39. e    :    mult_expr ( ("\+"^|"\-"^) mult_expr )*
  40.     ;
  41.  
  42. mult_expr
  43.     :    atom ( ("\*"^|"\/"^) atom )*
  44.     ;
  45.  
  46. atom:    IDENTIFIER
  47.     |    NUMBER
  48.     ;
  49.  
  50. }
  51.  
  52. #token IDENTIFIER    "[a-z]+"
  53. #token NUMBER        "[0-9]+"
  54.